import {goodsList,goodsCount} from "../../request/api"
const state = {
  list:[],
  // 管理员总数
  count:0,
  // 每页展示的条数
  size:2,
  // 当前页码数
  page:1
}

const mutations = {
  changeList(state,arr){
    state.list = arr
  },
  changeCount(state,num){
    state.count = num
  },
  changePage(state,num){
    state.page = num
  }
}

const actions = {
  // 请求列表数据
  asyncList(context){
    // size：每页展示的条数。     page：当前第几页
    goodsList({size:context.state.size,page:context.state.page}).then(res=>{
      let arr = res.data.list?res.data.list:[]
      /* 
        如果arr.length为0并当前页码数大于1，说明当前页码没有数据，没有数据我们就要给当前页码数-1，然后再请求。
        比如我现在在第3页，点了两次删除，分页应该在第二页，数据应该展示第二页的数据，但是我们如果不处理的话数据还是请求的第3页数据。所以我们要将当前页码数-1再请求
      */

      if(arr.length == 0 && context.state.page > 1){
        context.commit("changePage",context.state.page - 1)
        context.dispatch("asyncList")
      }

      context.commit("changeList",arr)
    })
  },
  // 请求管理员总数量
  asyncCount(context){
    goodsCount().then(res=>{
      context.commit("changeCount",res.data.list[0].total)
    })
  },
  // 当当前页码数发生变化
  asyncPage(context,num){
    // 1、改变状态层里面的当前页码数
    context.commit("changePage",num)
    // 2、重新请求列表数据
    context.dispatch("asyncList")
  }
}

const getters = {
  list(state){
    return state.list
  },
  count(state){
    return state.count
  },
  size(state){
    return state.size
  }
}

export default{
  state,
  mutations,
  actions,
  getters,
  namespaced: true
}